iT邦幫忙

2023 iThome 鐵人賽

DAY 7
0
Cloud Native

2023 年了,一起來學 CDN - 你也可以瞭解的 CloudFront 系列 第 7

Day 07 - 那個,我可以用自己的域名嗎

  • 分享至 

  • xImage
  •  

在剛確定可以使用 CDN 來加速後,後續的第一個問題,很可能就是:
「請問,CDN 可以不要只有 dwnhikcdqi4zf.cloudfront.net 這類網址,可以用我自己的域名嗎?」

當 然 可 以

今天就一起來瞭解如何透過 CloudFront 設定為你自己可以控制的域名。

目標

原本的 HTTP 網址: http://ironman2023-alb-1744908637.ap-northeast-1.elb.amazonaws.com/
CDN 域名: http://dwnhikcdqi4zf.cloudfront.net
期望後續改用域名: https://ironman.kgg23.com

讓 CDN 可以用自己域名的,需要完成哪些事

要讓 Client(ex: 瀏覽器) 要使用我們自己的域名連線到 CDN 時,我們可以怎麼做?
首先,先把 DNS 紀錄設定好。

1. Client 解析到自己域名時,需要解析到 CDN 的 IP

Step a. 在 CloudFront Console 裡,可以找到每個 Distribution 對應的域名。
https://ithelp.ithome.com.tw/upload/images/20230909/20162502gXbeBqE134.png
Step b. 找到域名後,添加一條對應的紀錄,相關設定如下(以 Route53 設定 ironman.kgg23.com 為例):

Name: ironman
Type: CNAME
Value: dwnhikcdqi4zf.cloudfront.net

https://ithelp.ithome.com.tw/upload/images/20230909/20162502oGTwwLazc8.png
Step c. 設定好了,用 dig 指令已經可以看到對應的呈現。

$ dig +short  ironman.kgg23.com
dwnhikcdqi4zf.cloudfront.net.
13.35.37.34
13.35.37.186
13.35.37.91
13.35.37.231

DNS 紀錄成功加上了,但,好像連不上?

$ curl -svo /dev/null http://ironman.kgg23.com
< HTTP/1.1 403 Forbidden
< Server: CloudFront

https://ithelp.ithome.com.tw/upload/images/20230909/20162502NX3RTqkgRY.png

原來文件有說,如果要使用自己指定的 CNAME,需要先在 Distribution 設定 CNAME 並設定對應的憑證。經過測試,我們知道如果沒有設定對應的 CNAME,就會 403。

2. 設定 CNAME & 添加對應的憑證

Step a. 修改目標 Distribution 的設定把CNAME (ironman.kgg23.com) 填寫進去。
Step b. 添加憑證的時候,如果在自己帳號下的 us-east-1 區的 "Certificate Manager" 服務中,還沒有對應這域名的憑證,我們可以直接申請一個。(或上傳憑證,但我推薦直接申請一個新的[1]。詳細步驟可參考這文件-請求公有憑證。如果已經有,就可以直接跳到步驟 f.
Step c. (申請憑證的簡化步驟版本) 登入 Certificate Manager 的 Console,切換至 'us-east-1' region)
Step d. (申請憑證的簡化步驟版本) 選擇 "request a public certificate", 域名("Fully qualified domain name")填寫 "*.yourdomain.com" (比方說,我這填寫 "*.kgg23.com"選擇 DNS Validation,按下 "request"。點選下一頁的紀錄,將要求的 Name & Value 紀錄下來。
https://ithelp.ithome.com.tw/upload/images/20230909/20162502EshZLcDVRT.png
https://ithelp.ithome.com.tw/upload/images/20230909/20162502qp48fNHZ3z.png
Step e. (申請憑證的簡化步驟版本) 將前步驟紀錄的 Name & Value 添加到 DNS 紀錄中,生效之後回到 Certification Manager 檢查,不用等太久,就會看到已經順利通過囉。
https://ithelp.ithome.com.tw/upload/images/20230909/20162502g5hDlVVWVU.png
Step f. 完成憑證申請後,回到 Distribution 設定畫面中,選擇剛申請的憑證(可按下憑證下拉選單右側的 reload 按鈕,重新整理有哪些憑證內容);
Step g. "Legacy Client Support": 如果你不知道是否要選這個,就別勾選[2]。
Step h. security policy 選擇: "TLSv1.2_2021 (recommended)"
Step i. 存檔,完成設定。等相關更新完成,此時已經可以成功連線囉。
https://ithelp.ithome.com.tw/upload/images/20230909/20162502jM4Y0KjCmh.png

[1] 相較於上傳憑證,透過 Certification Manager 申請頒發的憑證,最大的好處是:
只要持續有使用& 使用 DNS 認證,AWS 會自動在憑證到期之前續約。(因為憑證到期沒來得及更新造成網站無法使用,是很多維護網站的人出過的包 (通常還會被視為低級錯誤)
[2] CloudFront 在提供服務時,一般是使用 SNI(Server Name Indication),但很舊的 Client 端(ex: Android 3.3 之前),不能支持 SNI 功能,所需要額外勾選來提供相容能力。


上一篇
Day 06 - 可以不要一直清 Cache 嗎?
下一篇
Day 08 - 聽說可以直接拿 S3 當源站,該怎麼做?
系列文
2023 年了,一起來學 CDN - 你也可以瞭解的 CloudFront 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言